Security News
Cloudflare Adds Security.txt Setup Wizard
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
rollup-plugin-copy
Advanced tools
The rollup-plugin-copy package is a Rollup plugin that allows you to copy files and folders as part of your build process. This can be useful for tasks such as copying static assets, configuration files, or other resources that need to be included in your final build output.
Copying Files
This feature allows you to copy individual files or patterns of files from a source directory to a destination directory. In this example, all files in the 'src/assets' directory are copied to the 'dist/assets' directory.
const copy = require('rollup-plugin-copy');
module.exports = {
input: 'src/index.js',
output: {
file: 'dist/bundle.js',
format: 'cjs'
},
plugins: [
copy({
targets: [
{ src: 'src/assets/*', dest: 'dist/assets' }
]
})
]
};
Copying Folders
This feature allows you to copy entire folders from a source directory to a destination directory. In this example, the 'src/config' folder is copied to the 'dist/config' folder.
const copy = require('rollup-plugin-copy');
module.exports = {
input: 'src/index.js',
output: {
file: 'dist/bundle.js',
format: 'cjs'
},
plugins: [
copy({
targets: [
{ src: 'src/config', dest: 'dist/config' }
]
})
]
};
Transforming Files
This feature allows you to transform the contents of files as they are copied. In this example, the 'src/config.json' file is copied to 'dist/config.json' with all instances of 'foo' replaced with 'bar'.
const copy = require('rollup-plugin-copy');
module.exports = {
input: 'src/index.js',
output: {
file: 'dist/bundle.js',
format: 'cjs'
},
plugins: [
copy({
targets: [
{ src: 'src/config.json', dest: 'dist/config.json', transform: (contents) => contents.toString().replace(/foo/g, 'bar') }
]
})
]
};
The copy-webpack-plugin is a similar plugin for Webpack that copies files and directories during the build process. It offers similar functionality to rollup-plugin-copy but is designed to work with Webpack instead of Rollup.
The gulp-copy package is a Gulp plugin that allows you to copy files and directories as part of your Gulp build process. It provides similar functionality to rollup-plugin-copy but is intended for use with Gulp.
The grunt-contrib-copy package is a Grunt plugin that copies files and directories as part of your Grunt build process. It offers similar functionality to rollup-plugin-copy but is designed for use with Grunt.
Copy files and folders, with glob support.
# yarn
yarn add rollup-plugin-copy -D
# npm
npm install rollup-plugin-copy -D
// rollup.config.js
import copy from 'rollup-plugin-copy'
export default {
input: 'src/index.js',
output: {
file: 'dist/app.js',
format: 'cjs'
},
plugins: [
copy({
targets: [
{ src: 'src/index.html', dest: 'dist/public' },
{ src: ['assets/fonts/arial.woff', 'assets/fonts/arial.woff2'], dest: 'dist/public/fonts' },
{ src: 'assets/images/**/*', dest: 'dist/public/images' }
]
})
]
}
There are some useful options:
Type: Array
| Default: []
Array of targets to copy. A target is an object with properties:
string
Array
): Path or glob of what to copystring
Array
): One or more destinations where to copystring
Function
): Change destination file or folder nameFunction
): Modify file contentsEach object should have src and dest properties, rename and transform are optional. globby is used inside, check it for glob pattern examples.
copy({
targets: [{ src: 'src/index.html', dest: 'dist/public' }]
})
copy({
targets: [{ src: 'assets/images', dest: 'dist/public' }]
})
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }]
})
copy({
targets: [{ src: ['src/index.html', 'src/styles.css', 'assets/images'], dest: 'dist/public' }]
})
copy({
targets: [{ src: ['assets/images/**/*', '!**/*.gif'], dest: 'dist/public/images' }]
})
copy({
targets: [
{ src: 'src/index.html', dest: 'dist/public' },
{ src: 'assets/images/**/*', dest: 'dist/public/images' }
]
})
copy({
targets: [{ src: 'src/index.html', dest: ['dist/public', 'build/public'] }]
})
copy({
targets: [{ src: 'src/app.html', dest: 'dist/public', rename: 'index.html' }]
})
copy({
targets: [{
src: 'assets/docs/*',
dest: 'dist/public/docs',
rename: (name, extension, fullPath) => `${name}-v1.${extension}`
}]
})
copy({
targets: [{
src: 'src/index.html',
dest: 'dist/public',
transform: (contents, filename) => contents.toString().replace('__SCRIPT__', 'app.js')
}]
})
Type: boolean
| Default: false
Output copied items to console.
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
verbose: true
})
Type: string
| Default: buildEnd
Rollup hook the plugin should use. By default, plugin runs when rollup has finished bundling, before bundle is written to disk.
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
hook: 'writeBundle'
})
Type: boolean
| Default: false
Copy items once. Useful in watch mode.
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
copyOnce: true
})
Type: boolean
| Default: false
Copy items synchronous.
copy({
targets: [{ src: 'assets/*', dest: 'dist/public' }],
copySync: true
})
Type: boolean
| Default: true
Remove the directory structure of copied files.
copy({
targets: [{ src: 'assets/**/*', dest: 'dist/public' }],
flatten: false
})
All other options are passed to packages, used inside:
MIT
FAQs
Copy files and folders using Rollup
We found that rollup-plugin-copy demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
Security News
The Socket Research team breaks down a malicious npm package targeting the legitimate DOMPurify library. It uses obfuscated code to hide that it is exfiltrating browser and crypto wallet data.
Security News
ENISA’s 2024 report highlights the EU’s top cybersecurity threats, including rising DDoS attacks, ransomware, supply chain vulnerabilities, and weaponized AI.